﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL_MechSysWeb;
using DTO_MechSysWeb;
using System.Web.Security;

namespace WEB_MechSysWeb.Paginas_Logado
{
    public partial class ClientePerfilWorkFlow : System.Web.UI.Page
    {
        BLLCliente bllCliente = new BLLCliente();
        BLLVeiculo bllVeiculo = new BLLVeiculo();
        BLLOrdemPendente bllOrdemPendente = new BLLOrdemPendente();
        MembershipUser memberShipUser;
        static int clienteID, ordemPendenteID, numServicosTotal, numServicosConcluidos;
        static string userID;
        List<DTOOrdemPendente> lstServicosPendentes = new List<DTOOrdemPendente>();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                memberShipUser = Membership.GetUser(User.Identity.Name);
                if (memberShipUser != null)
                {
                    if (Roles.IsUserInRole("Cliente"))
                    {
                        userID = memberShipUser.ProviderUserKey.ToString();
                        clienteID = bllCliente.BuscarClienteIDPorUserID(userID);

                    }
                    if (Roles.IsUserInRole("Administrador"))
                    {

                        Response.Redirect("~/Paginas_Administrador/PaginaPrincipalAdm.aspx");
                    }
                }
                else
                {
                    Response.Redirect("~/Paginas_Publico/PagLogin.aspx");
                }
            }
            catch (Exception)
            {
                Response.Redirect("~/Paginas_Publico/PagLogin.aspx");
            }

            PreecherDados();
        }

        public void PreecherDados()
        {
            try
            {
                lstServicosPendentes = bllOrdemPendente.BuscarOdensPendentesPorClienteID(clienteID);
                gridServicos.DataSource = PopulaGridServicos(lstServicosPendentes);
                gridServicos.DataBind();
            }
            catch (Exception)
            {
                Mensagem.ExibirEmUP("Não foi possível carregar dados!");
            }
        }

        public DataTable PopulaGridServicos(List<DTOOrdemPendente> lstServicos)
        {
            DataTable dataTableGridView = new DataTable();
            DataRow dataRow;

            try
            {
                if (lstServicos.Count > 0)
                {

                    dataTableGridView.Columns.Add("OrdemPendenteID", typeof(string));
                    dataTableGridView.Columns.Add("Veiculo", typeof(string));
                    dataTableGridView.Columns.Add("DataEntrada", typeof(string));
                    dataTableGridView.Columns.Add("PrevisaoEntrega", typeof(string));
                    dataTableGridView.Columns.Add("DataEntrega", typeof(string));
                    dataTableGridView.Columns.Add("Prioridade", typeof(string));
                    dataTableGridView.Columns.Add("Status", typeof(bool));

                    foreach (DTOOrdemPendente dtoServico in lstServicos)
                    {
                        dataRow = dataTableGridView.NewRow();

                        dataRow["OrdemPendenteID"] = dtoServico.OrdemPendenteID.ToString();
                        DTOVeiculo dtoVeiculo = bllVeiculo.BuscarVeiculoPorVeiculoID(dtoServico.VeiculoID);
                        dataRow["Veiculo"] = string.Format("{0} {1}", dtoVeiculo.Marca, dtoVeiculo.Modelo);
                        dataRow["DataEntrada"] = string.Format("{0:d}", dtoServico.DataEntrada);
                        dataRow["PrevisaoEntrega"] = string.Format("{0:d}", dtoServico.PrevisaoEntrega);
                        if (dtoServico.status == true)
                        {
                            dataRow["DataEntrega"] = string.Format("{0:d}", dtoServico.DataEntrega);
                        }
                        else
                        {
                            dataRow["DataEntrega"] = "Pendente";
                        }
                        dataRow["Prioridade"] = dtoServico.Prioridade.ToString();
                        dataRow["Status"] = dtoServico.status;

                        dataTableGridView.Rows.Add(dataRow);

                    }
                }

            }
            catch (Exception)
            {
                Mensagem.ExibirEmUP("Não foi possível carregar os dados para o grid!");
            }

            return dataTableGridView;
        }

        public void LimparCampos()
        {

            txtVeiculo.Text = string.Empty;
            txtDataEntrada.Text = string.Empty;
            txtPrevisaoEntrega.Text = string.Empty;
            txtDataEntrega.Text = string.Empty;
            txtResumo.Text = string.Empty;
            txtDescricao.Text = string.Empty;
            ordemPendenteID = 0;

        }


        protected void gridServicos_SelectedIndexChanged(object sender, EventArgs e)
        {
            ordemPendenteID = Convert.ToInt32(gridServicos.SelectedValue.ToString());

            DTOOrdemPendente dtoOrdemPendenteS = bllOrdemPendente.BuscarOrdemPendentePorOrdemID(ordemPendenteID);

            DTOVeiculo dtoVeiculoS = bllVeiculo.BuscarVeiculoPorVeiculoID(dtoOrdemPendenteS.VeiculoID);
            txtVeiculo.Text = string.Format("{0} {1}", dtoVeiculoS.Marca, dtoVeiculoS.Modelo);
            txtDataEntrada.Text = dtoOrdemPendenteS.DataEntrada.ToShortDateString();
            txtPrevisaoEntrega.Text = dtoOrdemPendenteS.PrevisaoEntrega.ToShortDateString();
            if (dtoOrdemPendenteS.status == true)
            {
                txtDataEntrega.Text = dtoOrdemPendenteS.DataEntrega.ToShortDateString();
            }
            txtResumo.Text = dtoOrdemPendenteS.Resumo;
            txtDescricao.Text = dtoOrdemPendenteS.Descricao;

            numServicosTotal = bllOrdemPendente.BuscarNumTotalServicosPorOrdemID(ordemPendenteID);
            numServicosConcluidos = bllOrdemPendente.BuscarNumServicosConcluidosPorOrdemID(ordemPendenteID);
            
            lblServC.Visible = true;
            lblServT.Visible = true;
            lbltxt.Visible = true;
            lbltxt2.Visible = true;

            lblServC.Text = numServicosConcluidos.ToString();
            lblServT.Text = numServicosTotal.ToString();


            int mediaConclusao = (int)((numServicosConcluidos / (double)numServicosTotal) * 100);

            int aux = (int)((1 / (double)15) * 100);

            if (numServicosConcluidos > 0)
            {
                if (mediaConclusao >= aux)
                {
                    Image1.Visible = true;

                    if (mediaConclusao >= aux * 2)
                    {
                        Image2.Visible = true;

                        if (mediaConclusao >= aux * 3)
                        {
                            Image3.Visible = true;

                            if (mediaConclusao >= aux * 4)
                            {
                                Image4.Visible = true;

                                if (mediaConclusao >= aux * 5)
                                {
                                    Image5.Visible = true;

                                    if (mediaConclusao >= aux * 6)
                                    {
                                        Image6.Visible = true;

                                        if (mediaConclusao >= aux * 7)
                                        {
                                            Image7.Visible = true;

                                            if (mediaConclusao >= aux * 8)
                                            {
                                                Image8.Visible = true;

                                                if (mediaConclusao >= aux * 9)
                                                {
                                                    Image9.Visible = true;

                                                    if (mediaConclusao >= aux * 10)
                                                    {
                                                        Image10.Visible = true;

                                                        if (mediaConclusao >= aux * 11)
                                                        {
                                                            Image11.Visible = true;

                                                            if (mediaConclusao >= aux * 12)
                                                            {
                                                                Image12.Visible = true;

                                                                if (mediaConclusao >= aux * 13)
                                                                {
                                                                    Image13.Visible = true;

                                                                    if (mediaConclusao >= aux * 14)
                                                                    {
                                                                        Image14.Visible = true;

                                                                        if (mediaConclusao >= aux * 15)
                                                                        {
                                                                            Image15.Visible = true;

                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            
        }
    }
}